
/*
*Released on 28th June 2008.
*Any violations can be reported at paritosh@wikiocean.net
*What is treated as violations can be found at www.wikiocean.net/ppl1-voilations*
******************************************************************************
* The contents of this file are subject to POOL Public License 1.0 and later.
* POOL Public License is based on Affero GPL v3 and additional conditions.
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the Affero GPL v3 License at http://www.gnu.org/licenses/agpl.html
* You may obtain a copy of the POOL Public License 1.0 or later at www.wikiocean.net/license/ppl.html
* Software distributed under POOL Public License 1.0 is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Initial Developer of the Original Code is Paritosh Pungaliya (C) 2008. All Rights Reserved.
******************************************************************************
* Objective of the additional terms (license)
* 1) Is to extend the software freedom to freedom to work.
* 2) To ensure that knowledge is free from monopoly of agencies.
* 3) To avoid a situation where big corporate or investor can buy out free software groups and companies and then start milking the communities built around it.
* (this trend can be seen how the freedom is curtailed in companies that get Venture Capital funding.)
******************************************************************************
*/

package  database;

import java.util.Enumeration;
import java.util.Hashtable;

import logger.PoolLogger;


import dbmanager.DBManager;

public class RecordDelete {
	
	private String table = "property_details";
	
	private Hashtable<Object, Object> oldHash;
	private String query = null;
	private String deleteCondition = "";
	PoolLogger pl;
	
	public RecordDelete() {
		// logger
		pl = (PoolLogger) PoolLogger.getLogger(this.getClass().getName());
	}
	
	public void setTableName(String tableName) 
    {	
    	this.table = tableName;	
    }
    
		  
    /**
     * setDeleteHash() method will sets the condition for the table query part.
     * */
	 public void setDeleteHash(Hashtable<Object, Object> deleteHash) 
    {	
    	this.oldHash = new Hashtable<Object, Object>();
    	this.oldHash = deleteHash; 
    	deleteHashQuery(); // Calls the method for converting into the String.
    }
	    
	
    /**
     * deleteHashQuery() - It will creats the string from the Hash Table. Which get stores into the respected string variable.  
     * */
	private void deleteHashQuery() 
    {
		if(table.length() != 0)
    	{
    		if(oldHash.isEmpty())
    		{
    			System.out.println(" Condition Value Is Not Present ");
    			pl.info(" Condition Value Is Not Present ");
    			pl.debug(" Condition Value Is Not Present ");
    			pl.warn(" Condition Value Is Not Present ");
    			pl.fatal(" Condition Value Is Not Present ");
    			pl.error(" Condition Value Is Not Present ");
    			pl.trace(" Condition Value Is Not Present ");
				//query = "DELETE FROM " + table;
    		}
    		else
    		{
    			Enumeration<Object> keys = oldHash.keys();
        		while(keys.hasMoreElements())
        		{
        			String key = keys.nextElement().toString();
      			  	String value = oldHash.get(key).toString();
      			  	
      			    deleteCondition = deleteCondition + key + " = '" + value + "' AND ";
        		}
        		deleteCondition = deleteCondition.substring(0, deleteCondition.length() - 4);
    		}    		
    	}
    	else
		{
			System.out.println(" Table Name Does Not Exists. ");
			pl.info(" Table Name Does Not Exists. ");
			pl.debug(" Table Name Does Not Exists. ");
			pl.warn(" Table Name Does Not Exists. ");
			pl.fatal(" Table Name Does Not Exists. ");
			pl.error(" Table Name Does Not Exists. ");
			pl.trace(" Table Name Does Not Exists. ");
		}
	}
	  
	public synchronized int getDelete()
    {	
    	try
    	{
			query = "DELETE FROM " + table;
			
			try 
	  		{
				if(deleteCondition.length() != 0)
					query = query + " WHERE " + deleteCondition;
	  		}
	  		catch (Exception e) { }
    		        		
    		System.out.println("The query is : " + query);
    		pl.info("The query is : " + query);
			pl.debug("The query is : " + query);
			pl.warn("The query is : " + query);
			pl.fatal("The query is : " + query);
			pl.error("The query is : " + query);
			pl.trace("The query is : " + query);
			
    		int j=DBManager.getDelete(query);
    		if(j>0)
    		{
    			 System.out.println("Data deleted successfully");
    			 pl.info("Data deleted successfully");
    			 pl.debug("Data deleted successfully");
    			 pl.warn("Data deleted successfully");
    			 pl.fatal("Data deleted successfully");
    			 pl.error("Data deleted successfully");
    			 pl.trace("Data deleted successfully");
    		}
    		return j;
    	}
	  	catch(Exception e)
	  	{
	  		  e.printStackTrace();
	  	}  	return 0;	 
    }
	public static void main(String[] args) 
	{
		Hashtable<Object, Object> newHash = new Hashtable<Object, Object>();
		newHash.put("mid", "9377");
		newHash.put("pid", "9");
		//newHash.put("vt", "knowledge");
		newHash.put("pv", "9322");
		
		RecordDelete rd = new RecordDelete(); 
		rd.setDeleteHash(newHash);
		rd.getDelete();
		}
}
